package main

import (
	"fmt"
	"strings"
	"unicode"
)

func main() {
	TestContains()
	fmt.Println("-----------------------")
	TestContainsAny()
	fmt.Println("-----------------------")
	TestCount()
	fmt.Println("-----------------------")
	TestIndex()
	fmt.Println("-----------------------")
	TestIndexFunc()
	fmt.Println("-----------------------")
	TestLastIndex()
	fmt.Println("-----------------------")
	TestLastIndexFunc()
	fmt.Println("-----------------------")
	res := GetFileSuffix("abc.xyz.lmn.jpg")
	fmt.Println(res)
}

// 判断是否包含子串
func TestContains() {
	fmt.Println(strings.Contains("seafood", "foo"))
	fmt.Println(strings.Contains("seafood", "bar"))
	fmt.Println(strings.Contains("seafood", ""))
	fmt.Println(strings.Contains("", ""))
	fmt.Println(strings.Contains("steven王2008", "王"))
}

// 判断字符串是否包含另一字符串中的任一字符
func TestContainsAny() {
	fmt.Println(strings.ContainsAny("team", "bc"))
	fmt.Println(strings.ContainsAny("failure", "u & i"))
	fmt.Println(strings.ContainsAny("foo", ""))
	fmt.Println(strings.ContainsAny("", ""))
}

// 返回字符串包含另一个字符串的个数
func TestCount() {
	fmt.Println(strings.Count("cheese", "e"))
	fmt.Println(strings.Count("one", ""))
}

// 返回字符串中另一字符串首次出现的位置
func TestIndex() {
	fmt.Println(strings.Index("chicken", "ken"))
	fmt.Println(strings.Index("chicken", "dmr"))
}

// 返回字符串中的任一unicode码值首次出现的位置
func TestIndexAny() {
	fmt.Println(strings.IndexAny("abcABC120", "教育基地A"))
}

// 返回字符串中字符首次出现位置
func TestIndexByte() {
	fmt.Println(strings.IndexByte("123abc", 'a'))
}

// 判断字符串是否包含unicode码值
func TestIndexRune() {
	fmt.Println(strings.IndexRune("abcABC120", 'C'))
	fmt.Println(strings.IndexRune("It 培训教育", '教'))
}

// 返回字符串中满足函数 f(r) == true 字符首次出现的位置
func TestIndexFunc() {
	f := func(c rune) bool {
		return unicode.Is(unicode.Han, c)
	}
	fmt.Println(strings.IndexFunc("Hello123,中国", f))
}

// 返回字符串中子串最后一次出现的位置
func TestLastIndex() {
	fmt.Println(strings.LastIndex("Steven learn english", "e"))
	fmt.Println(strings.Index("go gopher", "go"))
	fmt.Println(strings.LastIndex("go gopher", "go"))
	fmt.Println(strings.LastIndex("go gopher", "rodent"))
}

// 返回字符串中任意一个unicode码值最后一次出现的位置
func TestLastIndexAny() {
	fmt.Println(strings.LastIndexAny("chicken", "aeiouy"))
	fmt.Println(strings.LastIndexAny("crwth", "aeiouy"))
}

// 返回字符串中字符最后一次出现的位置
func TestLastIndexByte() {
	fmt.Println(strings.LastIndexByte("abcABC123", 'A'))
}

// 返回字符串中满足函数 f(r) == true 字符最后一次出现的位置
func TestLastIndexFunc() {
	f := func(c rune) bool {
		return unicode.Is(unicode.Han, c)
	}

	fmt.Println(strings.LastIndexFunc("Hello,世界", f))
	fmt.Println(strings.LastIndexFunc("Hello,world中国人", f))
}

// 获取文件后缀
func GetFileSuffix(str string) string {
	arr := strings.Split(str, ".")
	return arr[len(arr)-1]
}
